package com.alpaak.consumer.api;

import com.alpaak.service.AnnotationService;
import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;

/**
 * @author alpaak
 * @des: api服务消费者
 * @date 2020/4/6 9:39
 */
public class ConsumerApp {
    public static void main(String[] args) {
        // 当前应用配置
        ApplicationConfig application = new ApplicationConfig();
        application.setName("consumer");

// 连接注册中心配置
        RegistryConfig registry = new RegistryConfig();
        registry.setCheck(false);
        registry.setAddress("zookeeper://192.168.1.99:2181");
//        registry.setUsername("aaa");
//        registry.setPassword("bbb");

// 注意：ReferenceConfig为重对象，内部封装了与注册中心的连接，以及与服务提供方的连接

// 引用远程服务
        ReferenceConfig<AnnotationService> reference = new ReferenceConfig<AnnotationService>(); // 此实例很重，封装了与注册中心的连接以及与提供者的连接，请自行缓存，否则可能造成内存和连接泄漏
        reference.setApplication(application);
        reference.setRegistry(registry); // 多个注册中心可以用setRegistries()
        reference.setInterface(AnnotationService.class);
        reference.setVersion("1.0.0");
        AnnotationService anno = reference.get();
        String hello = anno.sayHello("alpaak");
        System.out.println(hello);
    }
}
